Ir para o conteúdo

07. Configurando a nossa App (settings.py)

O arquivo principal de uma aplicação Django é o settings.py, e é nele que iremos mexer bem agora.

Configurando idioma no settings.py

Aonde você tem:

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'

Substituia por:

LANGUAGE_CODE = 'pt-br'
TIME_ZONE = 'America/Sao_Paulo'

Criando um arquivo .env e profissionalizando a estrutura

É muito importante para termos uma estrutura mais profissional separarmos as configurações de ambiente de configurações do projeto. Para isso usaremos da prática de se criar um arquivo .env na raiz do projeto onde deverá conter as minhas configurações.

Utilizaremos de uma lib criado pelo Henrique Bastos (welcomethedjango : referência de curso na área) chamada python-decouple e também da lib dj-database-url.

  • Crie o arquivo: .env na raiz do projeto com o seguinte conteúdo
# Pegue a sua SECRET_KEY já criada ou gere outra hash
SECRET_KEY=_fcu!1-n$76+@v=v4u9y68)z!)x0%8hj!51#k$+o)05gkgq40e
DEBUG=True
ALLOWED_HOSTS=127.0.0.1,.localhost
DATABASE_URL=mysql://seu_usuario:sua_senha@localhost:3306/nomedobancoprincipal
DATABASE_SECUNDARIO=mysql://seu_usuario:sua_senha@localhost:3306/nomedobancosecundario
LANGUAGE_CODE=pt-br
TIME_ZONE=America/Sao_Paulo
USE_I18N=True
USE_L10N=True
USE_TZ=True
  • Abra o arquivo settings.py e adicione logo após a linha 13 : import os o seguinte conteúdo:

settings.py

from decouple import config, Csv
from dj_database_url import parse

Configurações no settings.py vindas do .env

settings.py

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = config('SECRET_KEY')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = config('DEBUG', cast=bool, default=False)

ALLOWED_HOSTS = config('ALLOWED_HOSTS', cast=Csv(), default=[])

# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases

DATABASES = dict()
DATABASES['default'] = config('DATABASE_URL', cast=parse, default='sqlite:///' + os.path.join(BASE_DIR, 'db.sqlite3'))
# Usarei aqui: farsoft, mas você pode usar o nome que quiser
DATABASES['farsoft'] = config('DATABASE_SECUNDARIO', cast=parse)

# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/

LANGUAGE_CODE = config('LANGUAGE_CODE', default='pt-br')

TIME_ZONE = config('TIME_ZONE', default='America/Sao_Paulo')

USE_I18N = config('USE_I18N', default=True, cast=bool)

USE_L10N = config('USE_L10N', default=True, cast=bool)

USE_TZ = config('USE_TZ', default=True, cast=bool)

Aproveitando, você pode deixar o settings.py ainda mais profissional, para isso vamos separar os INSTALLED_APPS por DJANGO_APPS, THIRD_APPS, LOCAL_APPS.

settings.py

# Application definition

# Libs padrão quem vem com a instalação do Django
DJANGO_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# Libs de Terceiros
THIRD_APPS = [
    'django_extensions',
    'rest_framework',
    'rest_framework.authtoken',
    'rest_auth',
    'corsheaders',
]

# Apps locais que criarmos
LOCAL_APPS = [
    'api.core',
]

INSTALLED_APPS = DJANGO_APPS + THIRD_APPS + LOCAL_APPS